package offer;

/**
 * Creared with IntelliJ IDEA.
 * Description:给定单向链表的头指针和一个要删除的节点的值，定义一个函数删除该节点。返回删除后的链表的头节点。
 *
 * 1.此题对比原题有改动
 * 2.题目保证链表中节点的值互不相同
 * 3.该题只会输出返回的链表和结果做对比，所以若使用 C 或 C++ 语言，你不需要 free 或 delete 被删除的节点
 * User:yxd
 * Date:2022-07-15
 * Time:20:01
 */
public class JZ18 {
    public ListNode deleteNode (ListNode head, int val) {
        // write code here
        if(head == null)return null;
        ListNode prev = null;
        ListNode cur = head;
        while(cur != null && cur.val != val){
            prev = cur;
            cur = cur.next;
        }
        if(cur == null)return null;
        if(prev == null)return cur.next;
        prev.next = cur.next;
        return head;
    }
}
